/*
 * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package javax.swing.plaf.synth;

import java.awt.Graphics;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.plaf.ComponentUI;

/**
 * Provides the Synth L&amp;F UI delegate for
 * {@link javax.swing.JPasswordField}.
 *
 * @author Shannon Hickey
 * @since 1.7
 */
public class SynthPasswordFieldUI extends SynthTextFieldUI {

  /**
   * Creates a UI for a JPasswordField.
   *
   * @param c the JPasswordField
   * @return the UI
   */
  public static ComponentUI createUI(JComponent c) {
    return new SynthPasswordFieldUI();
  }

  /**
   * Fetches the name used as a key to look up properties through the
   * UIManager.  This is used as a prefix to all the standard
   * text properties.
   *
   * @return the name ("PasswordField")
   */
  @Override
  protected String getPropertyPrefix() {
    return "PasswordField";
  }

  /**
   * Creates a view (PasswordView) for an element.
   *
   * @param elem the element
   * @return the view
   */
  @Override
  public View create(Element elem) {
    return new PasswordView(elem);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  void paintBackground(SynthContext context, Graphics g, JComponent c) {
    context.getPainter().paintPasswordFieldBackground(context, g, 0, 0,
        c.getWidth(), c.getHeight());
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void paintBorder(SynthContext context, Graphics g, int x,
      int y, int w, int h) {
    context.getPainter().paintPasswordFieldBorder(context, g, x, y, w, h);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  protected void installKeyboardActions() {
    super.installKeyboardActions();
    ActionMap map = SwingUtilities.getUIActionMap(getComponent());
    if (map != null && map.get(DefaultEditorKit.selectWordAction) != null) {
      Action a = map.get(DefaultEditorKit.selectLineAction);
      if (a != null) {
        map.put(DefaultEditorKit.selectWordAction, a);
      }
    }
  }
}
